from typing import Generator

from sqlmodel import create_engine,Session
from .config import settings

# 创建数据库引擎
engine = create_engine(
    settings.DATABASE_URL,
    echo=settings.DEBUG,
    # 每次从连接池获取连接时，先发一个简单的查询如：select 1 检测连接是否有效
    pool_pre_ping=True,
    # 设置连接池中连接最大存活时间（秒），超时后会被回收并重新创建
    pool_recycle=3600,
)

def get_session() -> Generator[Session, None, None]:
    """获取数据库会话"""
    with Session(engine) as session:
        yield session
